package chapter05

/**
  * "函数式编程"是一种"编程范式"（programming paradigm）。思想取自于数学中的 y = f(x)
  * 它属于"结构化编程"的一种，主要思想是把运算过程尽量写成一系列嵌套的函数调用。
  * 函数式编程中，将函数也当做数据类型，因此可以接受函数当作输入（参数）和输出（返回值）。
  * 函数式编程中，最重要的就是函数。
  *
  *
  *
  * 定义函数格式
  * def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] {
  * 语句...
  * return 返回值
  * }
  * 函数声明关键字为def (definition)
  * [参数名: 参数类型], ...：表示函数的输入(就是参数列表), 可以没有。 如果有，多个参数使用逗号间隔
  * 函数中的语句：表示为了实现某一功能代码块
  * 函数可以有返回值,也可以没有
  * 返回值形式1: : 返回值类型 =
  * 返回值形式2: = 表示返回值类型不确定，使用类型推导完成
  * 返回值形式3: 表示没有返回值，return 不生效
  * 如果没有return ,默认以执行到最后一行的结果作为返回值。
  *
  */
object Test01_FunctionAndMethod {

  def main(args: Array[String]): Unit = {

    // 定义函数
    def sayHi(name: String): Unit = {
      println(s"hello$name")
    }

    //调用函数,临近原则
    sayHi("貂蝉")
    //调用对象方法
    Test01_FunctionAndMethod.sayHi("尚香")

    println(getName("黄月英"))
  }

  // 定义对象的方法
  def sayHi(name: String): Unit = {
    println(s"HELLO$name")
  }

  // 定义有返回值的对象的方法
  def getName(name: String) = {
    name
  }



}
